package com.demo.controller;

import com.alibaba.fastjson.JSON;
import com.demo.config.DateConvertConfig;
import com.demo.model.qo.DateConvertQo;
import com.demo.model.vo.DateConvertVo;
import com.demo.starter.dto.GeneralResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * 日期转换控制层
 * 对应的配置类{@link DateConvertConfig}
 */
@Slf4j
@RestController
public class DateConvertController {

    @GetMapping("/dataConvert/setLocalDate/{date}")
    public LocalDate setLocalDate(@PathVariable("date") LocalDate date) {
        log.info("date : " + date);
        return date;
    }

    /**
     * 请求体里的日期字符转LocalDateTime
     * 这个接口只能用postman或idea提供的http clinet工具进行调试，执行单元测试一直在报错
     * 使用idea的http client工具时，把下面内容复制到工具执行
     *  POST http://localhost:8763/getLocalDateTime
     *   Content-Type: application/json
     *
     *   {
     *     "localDateTime": "2022-09-16 00:00:00"
     *   }
     * @param qo 请求参数
     * @return 返回LocalDateTime
     */
    @PostMapping("/getLocalDateTime")
    public LocalDateTime getLocalDateTime(@RequestBody DateConvertQo qo) {
        log.info("qo : " + JSON.toJSONString(qo));
        return qo.getLocalDateTime();
    }

    /**
     * 测试返回LocalDate集合
     * @return LocalDate集合
     */
    @GetMapping("/getLocalDateList")
    public GeneralResult<List<DateConvertVo>> getLocalDate() {
        List<DateConvertVo> list = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            DateConvertVo vo = new DateConvertVo();
            vo.setLocalDate(LocalDate.now());
            list.add(vo);
        }

        return GeneralResult.success(list);
    }
}
